import http from './http'

export function addToCart(data) {
  // 确保传递的是productId而不是cartId
  const payload = {
    productId: data.productId || data.skuId || data.id, // 优先使用productId，而不是cartId
    buyQuantity: data.buyQuantity || 1
  }
  console.log('services/cart.js - 发送到后端的addToCart数据:', payload)
  return http.post('/carts/add', payload)
}

export function updateCartQuantity(data) {
  // 确保传递cartId和buyQuantity字段，并记录日志以验证数量值
  console.log('services/cart.js - 接收到的updateCartQuantity数据:', data)
  
  const payload = {
    cartId: data.cartId || data.id, // 只使用cartId或id作为cartId，不使用productId
    buyQuantity: data.buyQuantity  // 直接使用传入的buyQuantity值，不做任何转换
  }
  
  console.log('services/cart.js - 发送到后端的updateCartQuantity数据:', payload)
  return http.put('/carts/quantity', payload)
}

export function updateCartChecked(data) {
  return http.post('/carts/update-checked', data)
}

export function deleteCartItems(ids) {
  // 使用DELETE方法发送请求，符合后端@DeleteMapping("/delete")要求
  // 将ids作为查询参数传递，符合@RequestParam(value = "ids") List<Integer> ids要求
  
  // 根据传入的ids参数类型，构造适当的查询参数
  let idsArray = []
  if (Array.isArray(ids)) {
    idsArray = ids
  } else if (ids && typeof ids === 'object' && 'ids' in ids) {
    // 如果ids是对象且包含ids属性，提取ids数组
    idsArray = Array.isArray(ids.ids) ? ids.ids : [ids.ids]
  } else {
    // 如果是单个ID，包装为数组
    idsArray = [ids]
  }
  
  // 构造符合Spring MVC @RequestParam列表参数要求的查询字符串
  // Spring MVC需要ids=1&ids=2&ids=3格式而不是ids=1,2,3
  const queryParams = new URLSearchParams()
  idsArray.forEach(id => {
    // 确保ID是整数类型，符合后端List<Integer>要求
    const intId = parseInt(id)
    if (!isNaN(intId)) {
      queryParams.append('ids', intId)
    }
  })
  
  const urlWithParams = `/carts/delete?${queryParams.toString()}`
  
  console.log('services/cart.js - 删除购物车商品请求URL:', urlWithParams)
  console.log('services/cart.js - 请求方法确认: DELETE')
  console.log('services/cart.js - 删除的商品ID列表(整数格式):', idsArray)
  
  // 发送DELETE请求
  return http.delete(urlWithParams)
}

export function listCart() {
  return http.get('/carts/list')
}


